package com.qdlc.p2p.biz.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.qdlc.p2p.common.util.DateUtil;
import com.qdlc.p2p.dal.dto.ExperienceRule;
import com.qdlc.p2p.dal.dto.NewActivityPlan;
import com.qdlc.p2p.dal.dto.NewActivityRule;

/**
 * Created by liaoxiangkai on 2015/11/16.
 */
public class ActivityTools {
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    /**
     * 获取当前日期的前一天，并以yyyyMMhh格式输出
     */
    public static String getPreDate() {
        Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
        cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.
        return sdf.format(cal.getTime());
    }
    /**
     * 获取当前日期，以yyyyMMhh格式输出
     */
    public static String getCurrentDate(){
        return sdf.format(Calendar.getInstance().getTime());
    }

    /**
     * 格式化日期，以yyyyMMhh格式输出
     */
    public static String format(Date date) {
        return sdf.format(date);
    }
    /**
     * 获取当前日期的后一天，并以yyyyMMhh格式输出
     */
    public static String getNextDate() {
        Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
        cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.
        return sdf.format(cal.getTime());
    }


    /**
     * 规则校验
     *
     * @param newActivityRule
     * @return
     */
    public static boolean checkRule(NewActivityRule newActivityRule, long userId) {
        if (newActivityRule == null) {
            return false;
        }
        if (userId <= 0) {
            return false;
        }
        int status = newActivityRule.getStatus();
        // 活动未激活状态,0:开启规则，1:关闭规则
        if (status != 0) {
            return false;
        }

        Date start_time = newActivityRule.getStartTime();
        Date end_time = newActivityRule.getEndTime();
        //数据库表中必须要填写清楚时间,如果为空则校验不通过
        if (start_time == null || end_time == null) {
            return false;
        }
        Date date = DateUtil.getNow();
        //开始结束时间判定
        if (start_time.getTime() > date.getTime()
                || end_time.getTime() < date.getTime()) {
            return false;
        }
        return true;
    }

    /**
     * 活动校验
     *
     * @return
     */
    public static boolean checkActivity(NewActivityPlan newActivityPlan, long userId) {
        if (newActivityPlan == null) {
            return false;
        }
        if (userId <= 0) {
            return false;
        }
        Date start_time = newActivityPlan.getStartTime();
        Date end_time = newActivityPlan.getEndTime();
        int status = newActivityPlan.getStatus();
        // 0:开启，1:关闭,和旧的活动方案有差别
        if (status != 0) {
            return false;
        }
        Date date = DateUtil.getNow();
        //开始结束时间判定
        if (start_time.getTime() > date.getTime()
                || end_time.getTime() < date.getTime()) {
            return false;
        }
        return true;
    }
    /**
     * 为发放体验券做好体验券规则校验
     * @return
     */
    public boolean checkForGiveExperience(ExperienceRule experienceRule) throws Exception {
        if(experienceRule == null){
            return false;
        }
        if(experienceRule.getStatus()==0){
            return false;
        }
        if(experienceRule.getQuotaYes()+1 > experienceRule.getQuota()){
            return false;
        }
        return true;
    }
}
